/*
 * pid.h
 *
 *  Created on: 2021年10月29日
 *     
 */

#ifndef PID_H_
#define PID_H_
#include "sys.h"

#define POSITIONPID          0
#define INCREATEMENTPID      1
#define EXPERTPID            2

typedef struct
{
	float setPoint;      //目标值
	float actualPoint;   //实际值
	float result;        //输出调节结果
	float preError;      //上次误差
	float pre2Error;     //上上次误差
	float integral;      //积分，用于位置型
	float KP,KI,KD;      //比例，积分，微分系数
	float maximum;       //输出值上限
	float minimum;       //输出值下限
	float errorabsmax;   //偏差绝对值中位值
	float errorabsmid;   //偏差绝对值最小值
	float errorabsmin;   //偏差绝对值最小值

	void* pidRealizeFunction;    //PID实现函数
}PID;

void PidInit_X(PID* vPID);
void PidInit_Y(PID* vPID);
void PidInit(PID* vPID);
void PidDeInit(PID* vPID);
void PidRealize(PID* vPID,u8 PIDREALIZE_SELSECT);

#endif /* PID_H_ */
